Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

668
Visualizações
¿Cómo obtener una línea de lectura síncrona, o "simularla" usando asíncrono, en nodejs?

Me pregunto si hay una manera simple de obtener una línea de lectura "síncrona" o al menos obtener la apariencia de E / S síncrona en node.js

Yo uso algo como esto pero es bastante incómodo.

 var readline = require('readline'); var rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal: false }); var i = 0; var s1 = ''; var s2 = ''; rl.on('line', function(line){ if(i==0) { s1 = line; } else if(i==1) { s2 = line; } i++; }) rl.on('close', function() { //do something with lines })'

En lugar de esto, preferiría que fuera tan fácil como algo como

 var s1 = getline(); // or "await getline()?" var s2 = getline(); // or "await getline()?"

Condiciones útiles:

(a) Prefiero no usar módulos externos o el identificador de archivo /dev/stdio, estoy enviando código a un sitio web de envío de código y estos no funcionan allí

(b) Puede usar async/await o generadores

(c) Debe estar basado en líneas

(d) No debería requerir la lectura de la entrada estándar completa en la memoria antes del procesamiento

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

En caso de que alguien tropiece aquí en el futuro

Node11.7 agregó soporte para este doc_link usando async await await

 const readline = require('readline'); //const fileStream = fs.createReadStream('input.txt'); const rl = readline.createInterface({ input: process.stdin, //or fileStream output: process.stdout }); for await (const line of rl) { console.log(line) }

Recuerde envolverlo en la async function(){} , de lo contrario, obtendrá un error de palabra clave reservada .

 const start = async () =>{ for await (const line of rl) { console.log(line) } } start()

Para leer una línea individual, puede usar el iterador async manualmente

 const it = rl[Symbol.asyncIterator](); const line1 = await it.next();
over 4 years ago · Santiago Trujillo Relatório

0

Al igual que el módulo readline , hay otro módulo llamado readline-sync , que toma una entrada síncrona.

Ejemplo:

 const reader = require("readline-sync"); //npm install readline-sync let username = reader.question("Username: "); const password = reader.question("Password: ",{ hideEchoBack: true }); if (username == "admin" && password == "foobar") { console.log("Welcome!") }
over 4 years ago · Santiago Trujillo Relatório

0

Puedes simplemente envolverlo en una promesa -

 const answer = await new Promise(resolve => { rl.question("What is your name? ", resolve) }) console.log(answer)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda